// Formal Verification Project
// Top Level Wrapper


module wrapper(	clk,
				rst,
				start,
				short_key,
				short_plaintext,
				np_output,
				pipe_output,
				done,
				outDelta);

input clk, rst, start;
input [0:1] short_key;
input [0:1] short_plaintext;

output [0:127] np_output, pipe_output;
output done, outDelta;

wire [0:127] key;
wire [0:127] plaintext;

assign key = {125'b0, short_key};
assign plaintext = {125'b0, short_plaintext};

// initialize both modules

np_aes npAES ( 	.clk(clk),
				.rst(rst),
				.key(key),
				.start(start),
				.data_in(plaintext),
				.done(done),
				.data_out(np_output));
				

aespipe pipeAES(.clk(clk),
				.rst(rst),
				.data_in(plaintext),
				.key(key),
				.aesdata(pipe_output));
				

assign outDelta = ((pipe_output - np_output) == 127'b0) ? 1'b0 : 1'b1;


endmodule